/**
 *
 */
package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import java.util.List;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 *	车辆检索
 ***
 * 附加合并SSMS的   快速搜车 dubbo 服务：快速搜车，数据来源Kafka-Solr，过车信息已包含过车id和图片路径
 *  *
 * @author Administrator
 */
public interface DubboVehSearchService {
	/**
	 * 车牌号快速输入
	 * @param licenseNumber
     * @param num 返回条数
	 * @return
	 */
    public ResultPojo getVehSuggestSear(String licenseNumber,int num);
	public ResultPojo getVehSuggestSear(String licenseNumber);

    /**
     * 车辆品牌快速输入
     * @param brand
     * @param num 返回条数
     * @return
     */
    public ResultPojo getBrandSuggestSear(String brand,int num);
    /**
     * 车辆子品牌快速输入
     * @param brand  车辆品牌，精确查询
     * @param subbrand 模糊查询
     * @param num 返回条数
     * @return
     */
    public ResultPojo getSubBrandSuggestSear(String brand,String subbrand,int num);

    /**
     * 对过车记录进行查询并获取分页结果
     * PS 为了提高查询速度，建议尽可能输入车牌； 时间范围不确定时传null,比传具体时间范围性能更好
     * @param id          过车信息ID String 可以为null
     * @param licenseType 号牌类型  String 可为null
     * @param vehType     车辆类型  String 可为null
     * @param licenseNum  号牌号码  String 可以为null，支持模糊查询
     * @param vehColor    车身颜色  String 可为null
     * @param vehBrand    车辆品牌  String 可为null
     * @param vehBrandSub 车辆子品牌  String 可为null
     * @param vehBrandBirth 车辆年款  String 可为null
     * @param pendant 挂件  String 可为null   1：有挂件 0：无
     * @param chemicals 危化品  String 可为null   1：危化品 0：非
     * @param yellowLabel  黄标车 String 可为null   1：黄标车 0：非
     * @param leftShield  放下副驾驶遮阳板 String 可为null   1：放下 0：非
     * @param rightShield  放下主驾驶遮阳板 String 可为null   1：放下 0：非
     * @param leftBelt     副驾驶 安全带 String 可为null   1：有系 0：非
     * @param rightBelt    主驾驶 安全带 String 可为null   1：有系 0：非
     * @param leftCallup   副驾驶 打电话 String 可为null   1：打电话 0：非
     * @param rightCallup  主驾驶 打电话 String 可为null   1：打电话 0：非
     * @param startDay    分析起始日期  String 可为null
     * @param endDay      分析截止日期  String 可为null
     * @param deptIds    部门编号  List<String> 可以为null
     * @param pointIds    卡口编号  List<String> 可以为null
     * @param directionCode 卡口方向  String 可以为null
     * @param minSpeed    速度范围下限  Integer 可以为null
     * @param maxSpeed    速度范围上限  Integer 可以为null
     * @param page        分页信息 Page 不可为null,必须传入pagesize,currentPage
     * @return 包含过车信息的Page
     */
    ResultPojo getPageVehSear(String id, String licenseType, String vehType, String licenseNum, String vehColor, String vehBrand, String vehBrandSub,String vehBrandBirth, String pendant,String chemicals,String yellowLabel,String leftShield,String rightShield,String leftBelt,String rightBelt,String leftCallup,String rightCallup, String startDay, String endDay,List<String> deptIds, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed, Page page) throws Exception;
    ResultPojo getPageVehSear(String id, String licenseType, String vehType, String licenseNum, String startDay, String endDay,List<String> deptIds, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed, Page page) throws Exception;
    ResultPojo getPageVehSear(String id, String licenseType, String vehType, String licenseNum, String startDay, String endDay, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed, Page page) throws Exception;

    /**
     * 对过车记录进行查询并获取List< PassInfoDto >结果
     * PS 为了提高查询速度，建议尽可能输入车牌； 时间范围不确定时传null,比传具体时间范围性能更好
     * @param id          过车信息ID String  可以为null
     * @param licenseType 号牌类型  String 可为null
     * @param vehType     车辆类型  String 可为null
     * @param licenseNum  号牌号码 String  可以为null，支持模糊查询
     * @param startDay    分析起始日期  String 可为null
     * @param endDay      分析截止日期 String  可为null
     * @param deptIds    部门编号  List<String> 可以为null
     * @param pointIds    卡口编号  List<String> 可以为null
     * @param directionCode 卡口方向  String 可以为null
     * @param minSpeed    速度范围下限  Integer 可以为null
     * @param maxSpeed    速度范围上限  Integer 可以为null
     * @return 包含过车信息的List (默认上限1000条数据)
     */
    ResultPojo getVehSear(String id, String licenseType, String vehType, String licenseNum, String startDay, String endDay, List<String> deptIds, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed) throws Exception;
    ResultPojo getVehSear(String id, String licenseType, String vehType, String licenseNum, String startDay, String endDay, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed) throws Exception;


    /**
     * 对过车记录进行查询并获取List< PassInfoDto >结果
     * @param ids 过车信息ID的list<String>
     * @return 包含过车信息的Lists(默认上限1000条数据)
     */
    ResultPojo getVehSear(List<String> ids) throws Exception;

}
